package org.easy.eao.utils;

import java.io.Serializable;
import java.util.List;

import org.easy.eao.annotations.Merge;
import org.easy.eao.annotations.Persist;
import org.easy.eao.annotations.Remove;
import org.easy.eao.annotations.Retrieve;

public interface IParent<T, PK extends Serializable> {

	@Persist
	void create(T entity);

	@Retrieve
	T get(PK pk);
	
	@Retrieve
	T[] getAll(PK pk1, PK pk2);
	
	@Retrieve(lazy = true)
	T load(PK pk);

	@Retrieve
	List<T> loadAll(PK pk1, PK pk2);

	@Merge
	void update(T entity);

	@Remove
	void delete(T entity);

}
